This invention relates generally to computer systems, and more particularly to graphical user interfaces for computer systems.
Graphical user interfaces or GUI are becoming increasingly popular with computer users. It is generally accepted that computers having graphical user interfaces are easier to use, and that it is quicker to learn an application program in a GUI environment than in a non-GUI environment.
A relatively new type of computer which is well suited for graphical user environments is the pen-based or pen-aware computer system, hereinafter generically referred to as a "pen computer system", "pen computer", or the like. A pen-based computer system is typically a small, hand-held computer where the primary method for inputting data includes a "pen" or stylus. A pen-aware computer system is one which has been modified to accept pen inputs in addition to traditional input methods.
A pen computer system is typically housed in a relatively flat enclosure, and has a dual-function display assembly which serves as both an input device and an output device. When operating as an input device, the display assembly senses the position of the tip of a stylus on the viewing screen and provides this positional information to the computer's central processing unit (CPU). The display also senses whether the tip of the stylus is pressed against the screen. Some display assemblies can additionally sense the pressure of the stylus on the screen to provide further information to the CPU. When operating as an output device, the display assembly presents computer-generated images on the screen.
Typically, graphical images can be input into the pen computer systems by merely moving the stylus across the surface of the screen, i.e. by making a "stroke" on the screen. A stroke is defined as the engagement of the screen with a stylus (i.e. the stylus tip is pressed against the screen), the movement of the stylus across the screen (if any), and its subsequent disengagement from the screen (i.e. the stylus tip is lifted from the screen). While the stylus tip is pressed against the screen, the CPU senses the position and movement of the stylus and generates a corresponding image on the screen to create the illusion that the stylus is drawing the image directly upon the screen, i.e. that the stylus is "inking" an image on the screen. With suitable recognition software, text and numeric information can also be entered into the pen-based computer system in a similar fashion. Methods for recognizing the meaning of "ink" are well known to those skilled in the art.
Pen computers are designed such that they may be operated without an attached keyboard, using only a stylus for input. Most of the software written for pen computers is designed to function well with pen strokes and "tapping" the stylus against the computer screen in defined areas. A "tap" is defined as a stroke which is made at substantially one spot on the computer screen. Since the primary method for inputting information into a pen computer system comprises a stylus or other pointer mechanism, it is often necessary for the pen computer system to "recognize" ink-type input. For example, if a user writes the letters "C", "A", and "T" on the screen of the pen computer system using a stylus, it is desirable that the pen computer system be able to recognize these hand-inputs as the letters C, A, and T. Specialized computer programs known as "recognizers", "recognition engines", or "recognition routines" are used to convert ink-inputs to recognized objects.
There are many types of recognition routines. For example, there are recognition routines to recognize parts of characters, full characters, words, numbers, mathematical expressions, Kanji (Japanese language characters), etc. Recognizer routines are written by programmers who specialize in sophisticated mathematical algorithms for interpreting handwriting. However, these programmers typically have little experience in designing effective user interfaces. Because of this, recognizers are usually implemented as engine code ("recognition engine"), and it is up to the application program calling the recognition engine to create an interface for user input and for the correction of text. Since application programs are typically produced by a multiplicity of vendors, it is likely that each application program would have its own interface and editing model, resulting in inconsistencies between different applications. The result is a more cumbersome user interface which is harder to learn and which is more prone to errors.
Other pen computer systems take different approaches to providing a user interface for recognition routines. For example, the PenPoint operating system from GO Corporation of Foster City, Calif., provides a recognition interface which is part of its operating system. This has the desirable feature of providing a consistent user interface across all applications running under the PenPoint operating system. Unfortunately, making the user interface a part of the operating system limits the opportunity to provide customized interfaces, or to provide interfaces for a new type of recognition.
Microsoft Windows for Pen Computing (also commonly known as "Pen Windows") made by Microsoft, Inc. of Redmond, Wash., takes yet another approach. In the Pen Windows operating system, it is the recognizer routine itself which is responsible for the user interface. There are several problems with this approach, including the aforementioned problem that programmers skilled in the development of recognition routines tend not to be experts in the development of user interfaces. Furthermore, this system reduces flexibility because an application would have to be written with a particular recognizer routine in mind. Therefore, application developers may have to compromise in their selection of recognizer routines to find a recognizer routine that provides an adequate user interface as well as adequate recognition of ink-inputs.